package com.azzaou.dao.impl;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.azzaou.dao.IChantierDao;
import com.azzaou.model.Chantier;

public class ChantierDao extends HibernateDaoSupport implements IChantierDao {

	@Override
	public List<Chantier> getChantierByCriteria(Chantier chantier) {
		 List<Chantier> chantierList = new ArrayList<Chantier>();
	
		 StringBuffer requete = new StringBuffer("FROM Chantier WHERE 1=1 ");

		  if (chantier != null) {
				if (!StringUtils.isBlank(chantier.getNumeroContrat())) {
					requete.append(" AND numeroContrat = :numeroContrat ");
				}
				if (!StringUtils.isBlank(chantier.getStatut())) {
					requete.append(" AND statut= :statut ");
				}
				if (chantier.getStartDate()!=null) {
					requete.append(" AND startDate = :startDate ");
				}
				if (chantier.getEndDate()!=null) {
					requete.append(" AND endDate= :endDate ");
				}
		  }
		  Query query = getSession().createQuery(requete.toString());
		  
		  if (chantier != null) {
			  if (!StringUtils.isBlank(chantier.getNumeroContrat())) {
				  query.setString("numeroContrat", chantier.getNumeroContrat());
				}
				if (!StringUtils.isBlank(chantier.getStatut())) {
					query.setString("statut", chantier.getStatut());
				}
				if (chantier.getStartDate()!=null) {
					query.setDate("startDate", chantier.getStartDate());
				}
				if (chantier.getEndDate()!=null) {
					query.setDate("endDate", chantier.getEndDate());
				}
		  }
		  chantierList = query.list();
		 return chantierList;
	}

	@Override
	public void saveOrUpdate(Chantier chantier) {
		getHibernateTemplate().saveOrUpdate(chantier); 
	}

	@Override
	public void remove(Chantier chantier) {
		getHibernateTemplate().delete(chantier); 

	}

	@Override
	public Chantier getClientById(Long id) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<Chantier> getAllActifChantier() {
	    List<Chantier> chantierList = new ArrayList<Chantier>();
	    Query query = getSession().createQuery(" FROM Chantier");
	    chantierList = query.list();
	    return chantierList;
	}

}
